/******************************************************************************
----------------本例程仅供学习使用，未经作者允许，不得用于其他用途。-----------
------------------------版权所有，仿冒必究！-----------------------------------
----------------1.开发环境:Arduino IDE-----------------------------------------
----------------2.测试使用开发板型号：Arduino Leonardo or Arduino UNO R3-------
----------------3.单片机使用晶振：16M------------------------------------------
----------------4.淘宝网址：Ilovemcu.taobao.com--------------------------------
----------------------------epic-mcu.taobao.com--------------------------------
----------------5.作者：神秘藏宝室---------------------------------------------
******************************************************************************/
#define LED 13
#define KEY 2

int KEY_NUM = 0;			//按键键值存放变量，不等于1说明有按键按下

void setup()
{
  pinMode(LED,OUTPUT);					//定义LED为输出引脚
  pinMode(KEY,INPUT_PULLUP);		//定义KEY为带上拉输入引脚
}

void loop()
{
  ScanKey();						//按键扫描程序，当按键按下时候，该子程序会修改KEY_NUM的值
  if(KEY_NUM == 1)							//是否按键按下
  {   
    digitalWrite(LED,!digitalRead(LED));		//LED的状态翻转
  }
}

void ScanKey()						//按键扫描程序
{
  KEY_NUM = 0;							//清空变量
  if(digitalRead(KEY) == LOW)			//有按键按下
  {
    delay(20);						//延时去抖动
    if(digitalRead(KEY) == LOW)		//有按键按下
    {
      KEY_NUM = 1;				//变量设置为1
      while(digitalRead(KEY) == LOW);	//等待按键松手
    }
  }
}
